from django.db import models
from django.contrib.auth import get_user_model #导入用户模型类

OAUser = get_user_model() #OAUser 是一个指向用户模型类的引用

class AbsentStatusChoices(models.IntegerChoices): #定义状态的类别
    AUDITING = 1  #审批中
    PASS = 2  #通过
    REJECT = 3 #拒绝
class AbsentType(models.Model):  #定义请假类型
    name = models.CharField(max_length=100)
    create_time = models.DateTimeField(auto_now_add=True)

class Absent(models.Model):
    #1.标题 2.请假详细内容 3.请假类型（事家，婚假）
    # 4.发起人 5.审批人(可为空) 6.状态 7.假期开始时间 8.假期结束时间 9.假期发起时间
    # 10.审批回复内容
    title = models.CharField(max_length=200)
    request_content = models.TextField()
    absent_type = models.ForeignKey(AbsentType, on_delete=models.CASCADE,related_name='absents',related_query_name='absents')
    #在一模型中，都多个字段对用一模型引用了外键，那么必须指定related_name为不同值          #为区分防止混淆命名不能一样
    requester = models.ForeignKey(OAUser,on_delete=models.CASCADE,related_name='my_absents',related_query_name='my_absents')
    responder = models.ForeignKey(OAUser,on_delete=models.CASCADE,related_name='sub_absents',related_query_name='sub_absents',null = True ) #表示可以为空
    status = models.IntegerField(choices=AbsentStatusChoices.choices, default=AbsentStatusChoices.AUDITING)
    start_date = models.DateField()
    end_date = models.DateField()
    create_time = models.DateTimeField(auto_now_add=True)
    response_content = models.TextField(blank=True) #表示可为空

    class Meta: #将请假列表按发起时间做倒叙排序
        ordering=('-create_time',)